25

» WarCraft 3 / WC3 Explorer Patch

  • Программа весит достаточно много для такого функционала
  • Долго открывается (2-4 секунды)
  • Внешний вид интерфейса непривычный
  • Не берет из реестра текущий путь до варкрафта
  • При нажатии кнопки Install появляются сообщения, без которых можно обойтись
  • Нет вариантов запуска карты в оконном, open gl режимах
25

» WarCraft 3 / BladeMaster V.2

Текущая текстура сохранена с качеством 85%, однако все элементы, кроме знамени, выглядят размытыми. О каком, простите, качестве идёт речь? Кроме того, советую самому сохранить в 70% (как я написал выше) и сравнить с 85% (которая есть сейчас), прежде чем писать комментарии.
25

» WarCraft 3 / BladeMaster V.2

Текстура большая, можно сохранить в прогрессивном формате 70% качества и не увидеть разницы (грубо говоря). Зато вес снизится заметно - 271.3 Кб => 197.1 Кб.
25

» WarCraft 3 / Библиотека функций

Clamp, так пишут код только начинающие программисты. У тебя даже N не вынесена в аргумент функции.
Кроме того,
для создания мода random в любой карте, если надо, чтобы герои не повторялись
можно юзать юнит-пулы или вещи наподобие Id Random Set Library.
25

» WarCraft 3 / Wc3 Map Optimizer 5.0 Rus

Гораздо полезнее было бы перевести файл справки (кроме разве что истории версий), а ЕХЕ-шник не трогать. Советую сделать ещё перевод файла. Программу смотрел - перевод сам неплохой, но при более детальном изучении вылезли ошибки - некоторые фразы не переведены, "Включить / Выключить все" вылезает на бордюр панели, ссылка на хгм в окне "о программе" ведет по другому адресу и т. д.
25

» WarCraft 3 / Button Manager v1.8.2

Scarecrow, справку-то почитай, или в программе пошарь... Может быть, "мастер иконок" найдешь где-нибудь.
25

» WarCraft 3 / Муталиск

Моделька отличная. Текстуре можно было и поменьше качетсво поставить.
На хайв не надо, пусть это будет "эксклюзивно для xgm" :)
25

» WarCraft 3 / cJass - дополнение к языку JASS

Добавил на всякий случай информацию о "вирусах!!11" в шапку темы.
narayan,
  1. Сомнительно.
  2. Сомнительно.
  3. У векса было что-то подобное... Может пригодиться.
  4. Имхо, выглядит запутанней.
  5. Можно, но будет ли это выглядеть красиво - зависит от реализации.
  6. Можно.
  7. У векса было что-то подобное.
  8. Сомнительно.
  9. Усложняет понимание кода.
  10. Можно.
  11. Сомнительно.
  12. Не разобрался.
  13. Можно, хотя, если учитывать потенциальный размер структур, это может усложнить дебаг кода.
  14. Котовасия, зачем разные структуры с одинаковым содержанием?
25

» WarCraft 3 / Тестирование обновления 1.24c

Новость - боян, я еще неделю назад постил на форуме ([url]http://xgm.ru/forum/showpost.php?p=700570[/url]) =)
Близзы, как обычно, страдают головной болью.
25

» WarCraft 3 / cJass - дополнение к языку JASS

txt2:~FREEZE_ball, ну так все понятно - дефайн содержит в себе свое название. Измени хотя бы регистр букв в слове wave:
define <Wave>(num) = {
    private int array wave##Num##_1_ToPos[9]
}

Wave(1)
...и КиборгХелпер это скомпилит.
25

» WarCraft 3 / Библиотека функций

// #1:
  define Odd(o) = ((o * 0x80000000) == 0)

// #2:
  bool Odd(int o) {
    return (o * 0x80000000) == 0
  }

// ===================================== //

// #1:
  define Even(o) = ((o * 0x80000000) != 0)

// #2:
  bool Even(int o) {
    return (o * 0x80000000) != 0
  }
'nuff said.
25

» WarCraft 3 / Библиотека функций

XiMiKs, ты пробовал сохранять карту с таким кодом в редакторе?
  1. Функция не может возвращать два значения, it is impossible.
  2. Ретурн баг не рулит.
  3. Индусский кодинг не рулит, но как бы доставляет.
define {
  PolarX(x, d, a) = x + d * Cos(a)
  PolarY(y, d, a) = y + d * Sin(a)
}
И никаких гвоздей.
P.S. Советую пойти подучить jass...
25

» WarCraft 3 / Библиотека функций

XiMiKs, функция не может быть добавлена по нескольким причинам:
  1. Работа с точками медленнее, чем работа с координатами.
  2. Значение угла принимается в градусах, а не радианах.
  3. Код содержит ненужные в принципе действия.
25

» WarCraft 3 / Библиотека функций

txt2:
Hellfim, такая функция уже была опубликована Toadcop'ом - xgm.ru/forum/showpost.php?p=212729&postcount=31
Но, так как там используется return bug, его набор функций станет неактуальным с выходом нового патча.
Что касается твоего кода:
  • Полезность 1/10
    • Низкая, причину ты сам знаешь - только для дебага
  • Кодинг 6/10
    • Код неоптимален, конечно, но для варианта "только для дебага" - это безразлично
25

» WarCraft 3 / Библиотека функций

  1. Функция норм, реализация хромает (что-то мне подсказывает, что можно сделать проще).
  2. Бесполезно.
  3. Неэффективно. Вариант на массивах был бы попроще, хотя тоже не идеален.
  4. Первый пост, "Эмуляция ошибки в Warcraft".
25

» WarCraft 3 / Библиотека функций

Собственно, библиотека для выбора случайного элемента из заданного набора. Написана с применением vJass.
// Id Random Set Library v0.1
// 2009 © Shadow Daemon
library IDRS

  globals
    constant integer IDRS_MAX_SIZE = 256
    constant integer IDRS_NULL_IDX = -12345678
  endglobals

  struct randomset
    private integer array idx [IDRS_MAX_SIZE]
    private integer count = 0
    private integer index = 0

    method Add takes integer id returns nothing
      if .count > IDRS_MAX_SIZE then
        debug call BJDebugMsg(SCOPE_PREFIX + " Error: Max size limit reached")
        return
      endif
      set .index = .index + 1
      set .count = .count + 1
      set .idx[.index] = id
    endmethod

    method Get takes nothing returns integer
      local integer rnd = GetRandomInt(1, .index)
      local integer val = .idx[rnd]
      if .index == 0 then
        return IDRS_NULL_IDX
      endif
      set .idx[rnd] = .idx[.index]
      set .idx[.index] = val
      set .index = .index - 1
      return val
    endmethod

    method Reset takes nothing returns nothing
      set .index = .count
    endmethod
  endstruct

endlibrary
Метод Add добавляет целое число в набор возможных случайных значений.
Метод Get получает случайное значение из набора.
Метод Reset обнуляет выборку, полученную методом Get.
Пример использования
scope allrandom initializer init

globals
  randomset heroes
endglobals

private function AllRandom takes nothing returns nothing
  local integer id = heroes.Get()
  if id != IDRS_NULL_IDX then
    call CreateUnit(GetTriggerPlayer(), id, 0, 0, 0)
  else
    call heroes.Reset()
  endif
endfunction

private function init takes nothing returns nothing
  local trigger tr = CreateTrigger()
  call TriggerAddAction(tr, function AllRandom)
  call TriggerRegisterChatEvent(tr, Player(0), "-ar", false)
  set heroes = randomset.create()
  call heroes.Add('Hpal')
  call heroes.Add('Hamg')
  call heroes.Add('Hmkg')
  call heroes.Add('Hblm')
endfunction

endscope
25

» WarCraft 3 / Результаты Spell Contest 2

Свой спелл я придумал за два дня до конца конкурса, закончил делать - за час до конца.
Большая часть зависела от вашей фантазии и от массовой доли лени на килограмм веса))
25

» WarCraft 3 / XGM Spell Contest 2

GresAHT, конкурс продлен, оценивание работ начнется сразу после окончания конкурса.
Когда будут результаты? Когда будут оценены работы.
25

» Beyond the Dark Portal / Beyond the Dark Portal

Арастиор, просто тебе не к чему больше прикопаться, не так ли? Модели, по моему мнению, потрясные, несмотря на то, что это варианты 2007 года.
25

» WarCraft 3 / Библиотека функций

Скрещивание нескольких предметов одного типа:
function UnitUpgradeItem takes unit u, integer oldItemType, integer count, integer newItemType returns boolean
  local integer i = 0
  local integer j = 0
  local integer k = 0x00
  loop
    exitwhen i > 5 or j >= count
    if GetItemTypeId(UnitItemInSlot(u, i)) == oldItemType then
      set j = j + 1
      set k = k * 0x10 + i + 0x01
    endif
    set i = i + 1
  endloop
  if j < count then
    return false
  endif
  loop
    exitwhen k <= 0x00
    call RemoveItem(UnitItemInSlot(u, k - (k / 0x10) * 0x10 - 0x01))
    set k = k / 0x10
  endloop
  call UnitAddItemById(u, newItemType)
  return true
endfunction
u - юнит, у которого хотим скрестить предметы;
oldItemType - тип предметов, которые хотим скрестить;
count - количество предметов, при достижении которого их нужно скрестить;
newItemType - тип полученного предмета.
Возвращает true в случае успеха.
25

» WarCraft 3 / Библиотека функций

Radiant, конвертировать значение угла не обязательно, если только не собираешься задавать facing юниту. Т.е. все можно описать проще:
**x0 + dist * Cos(angle)
y0 + dist * Sin(angle)**
где x0, y0 - координаты начальной точки, dist - расстояние от начальной до целевой точки, angle - угол между начальной и целевой точкой.
Atan2(y2-y1, x2-x1)
где x1, x2, y1, y2 - соотв. координаты 1 и 2 точек.
А формулу, которую ты назваешь "формулой прыжка", можно сократить до:
amplifier * (dist / len)*(len - dist)
где amplifier - множитель высоты прыжка (aka сила прыжка), dist - текущее расстояние до цели, len - начальное расстояние до цели.
Странно, что последнюю формулу почти никто не юзает.
25

» Murloc Expansion / Murloc Expansion

» К концу лета проект будет готов?
Ты не поверишь, но весь состав SWS на это надеется ^_^
25

» WarCraft 3 / Библиотека функций

ADOLF, хмм, я проводил некоторые тесты, и понял (ладно-ладно, я еще с Тс поговорил ^_^ + еще вспомнил, что ты применил в той системе ascii-арта), что эти функции нужны для нормализации значений, полученных через return bug.
Hunter, а где DoNothing Array API? ^_^
25

» WarCraft 3 / Библиотека функций

ADOLF, наверно они нужны, чтобы гарантировать получение вменяемого значения из функции...